#include <iostream>

int main() {
    void avsco(float * pscore, float * paver);
    void avcour1(char (*pcourse)[10], float * pscore);
    void fail2(char course[5][10], int num[], float * pscore, float aver[4]);
    void good(char course[5][10], int num[4], float * pscore, float aver[4]);
    int i, j, *pnum, num[4];
    float score[4][5], aver[4], *pscore, *paver;
    char course[5][10], (*pcourese)[10];
    printf("Input course:\n");
    pcourese = course;
    for (i = 0; i < 5; i++) {
        scanf("%s", course[i]);
    }
    printf("input NO. and score:\n");
    printf("NO.");
    for (i = 0; i < 5; i++) {
        printf(",%s", course[i]);
    }
    printf("\n");
    pscore = &score[0][0];
    pnum = &num[0];
    for (i = 0; i < 4; i++) {
        scanf("%d", pnum + i);
        for (j = 0; j < 5; j++) {
            scanf("%f", pscore + 5 * i + j);
        }
    }
    paver = &aver[0];
    avsco(pscore, paver);
    avcour1(pcourese, pscore);
    printf("\n");
    fail2(pcourese, pnum, pscore, paver);
    printf("\n\n");
    good(pcourese, pnum, pscore, paver);
    return 0;
}

void avsco(float * pscore, float * paver) {
    int i, j;
    float sum, average;
    for (i = 0; i < 4; i++) {
        sum = 0.0;
        for (j = 0; j < 5; j++)
            sum = sum + (* (pscore + 5 * i + j));
        average = sum / 5;
        * (paver + i) = average;
    }
}

void avcour1(char (*pcourse)[10], float * pscore) {
    int i;
    float sum, average1;
    sum = 0.0;
    for (i = 0; i < 4; i++) {
        sum += (*(pscore + 5 * i));
    }
    average1 = sum / 4;
    printf("course1: %s\t average score %7.2f\n", *pcourse, average1);
}

void fail2(char course[5][10], int num[], float * pscore, float aver[4]) {
    int i, j, k, lable;
    printf("========================Student who is fail in two courses=====================\n");
    printf("NO.");
    for (i = 0; i < 5; i++) {
        printf("%11s", course[i]);
    }
    printf("\taverage\n");
    for (i = 0; i < 4; i++) {
        lable = 0;
        for (j = 0; j < 5; j++) {
            if (* (pscore + 5 * i + j) < 60.0) lable++;
        }
        if (lable >= 2) {
            printf("%d", num[i]);
            for (k = 0; k < 5; k++)
                printf("%11.2f", * (pscore + 5 * i + k));
            printf("%11.2f\n", aver[i]);
        }
    }
}

void good(char course[5][10], int num[4], float * pscore, float aver[4]) {
    int i, j, k, n;
    printf("==========Student whose score is good==========\n");
    printf("NO.");
    for (i = 0; i < 5; i++) {
        printf("%11s", course[i]);
    }
    printf("\taverage\n");
    for (i = 0; i < 4; i++) {
        n = 0;
        for (j = 0; j < 5; j++) {
            if (* (pscore + 5 * i + j) > 85.0) n++;
        }
        if ((n ==5) || (aver[i] > 90)) {
            printf("%d", num[i]);
            for (k = 0;k < 5; k++) {
                printf("%11.2f", * (pscore + 5 * i + k));
            }
            printf("%11.2f\n", aver[i]);
        }
    }
}

























